<!DOCTYPE html>

<html lang="en">
  <head>
    
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Class Phalcon\Di &mdash; Phalcon 2.0.0 文档</title>
    <meta name="keywords" content="php, phalcon, phalcon php, php framework, faster php framework"><link rel="stylesheet" type="text/css" href="../_static/bootstrap.min.css" />
    <link rel="stylesheet" type="text/css" href="http://static.phalconphp.com/css/phalcon.min.css" />
    <link href='https://fonts.googleapis.com/css?family=Open+Sans:700,400' rel='stylesheet' type='text/css'>
    <link href="http://fonts.googleapis.com/css?family=Merriweather:400,700" rel="stylesheet" type="text/css" />
    <!--
    EUROPE <link href='https://fonts.googleapis.com/css?family=Open+Sans:700,400&subset=latin-ext' rel='stylesheet' type='text/css'>
    GREEK <link href='https://fonts.googleapis.com/css?family=Open+Sans:700,400&subset=greek-ext' rel='stylesheet' type='text/css'>
    RUSSIA <link href='https://fonts.googleapis.com/css?family=Open+Sans:700,400&subset=cyrillic-ext,latin' rel='stylesheet' type='text/css'>
    -->

    <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
      <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->

    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    <link rel="stylesheet" href="../_static/docs.css" type="text/css" />
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../',
        VERSION:     '2.0.0',
        COLLAPSE_MODINDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>

    <script src="../_static/jquery.min.js"></script>
    <script type="text/javascript" src="../_static/docs.js"></script>
    <link rel="shortcut icon" href="../_static/favicon.ico"/>
    <link rel="top" title="Phalcon 2.0.0 文档" href="../index.html" /> 
  </head>
  <body>

<header class="page-header">
    <nav class="navbar" role="navigation">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#main-menu-container">
                    <span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span>
                </button>
                <a class="navbar-brand phalcon-logo" href="/"><span itemprop="name" class="sr-only">Phalcon PHP</span></a>
            </div>

            <div class="collapse navbar-collapse navbar-right" id="main-menu-container">
                <ul class="nav navbar-nav main-menu">
                  <li class="first"><a href="http://phalconphp.com/en/download" class="header-nav-link">Download</a></li>
                  <li><a href="http://docs.phalconphp.com/en/latest/index.html" class="header-nav-link" target="_blank">Documentation</a></li>
                  <li><a href="http://forum.phalconphp.com/" class="header-nav-link" target="_blank">Forum</a></li>
                  <li><a href="http://blog.phalconphp.com/" class="header-nav-link" target="_blank">Blog</a></li>
                  <li><a href="http://phalconphp.com/en/about">About</a></li>
                </ul>
            </div>
        </div>
    </nav>
  </header>

<div class="heading">
    <div class="container">
        <div class="row">
            <h2>Documentation</h2>
        </div>
    </div>
</div>
    <!--<div class="header-line">
      <div class="size-wrap">
        <div class="header-line-title title-white">Documentation</div>
      </div>
    </div>-->
    <div class="related">
      <ul>
        <li class="right" >
          <a href="../genindex.html" title="总目录"
             accesskey="I">索引</a></li>
        <li><a href="http://phalconphp.com">Home</a> &raquo;</li>
        <li><a href="../index.html">Phalcon 2.0.0 文档</a> &raquo;</li> 
      </ul>
    </div>  

      <table width="100%" align="center" cellpadding="0" cellspacing="0">
        <tr>
      <td class="primary-box" width="25%" valign="top">
            <div>
            <div id="searchbox" style="">
                <!--<form class="search" action="http://readthedocs.org/search/project/" method="get">
                  <input type="search" name="q" size="25" placeholder="Search">
                  <input type="submit" value="Go">
                  <input type="hidden" name="selected_facets" value="project:">
                </form>-->
                <div style="width:200px;padding:10px">
                  <gcse:searchbox-only></gcse:searchbox-only>
                </div>
            </div>
            </div>
            <div style="padding:5px;padding-left:10px">
              <div id="carbonads-container">
                <div class="carbonad"><div id="azcarbon"></div>
                <script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/56496/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script>
                </div></div>
            </div>
            <h3><a href="../index.html">內容目录</a></h3>
            <ul>
<li><a class="reference internal" href="#">Class <strong>Phalcon\Di</strong></a><ul>
<li><a class="reference internal" href="#methods">Methods</a></li>
</ul>
</li>
</ul>

            <h3>本页</h3>
            <ul class="this-page-menu">
              <li><a href="../_sources/api/Phalcon_DI.txt" rel="nofollow">显示源代码</a></li>
            </ul>
        </td>
          <td class="second-box" valign="top">
            <div class="document">
                <div class="documentwrapper">
                  <div class="bodywrapper">
                    <div class="body" >
                      
  <div class="section" id="class-phalcon-di">
<h1>Class <strong>Phalcon\Di</strong><a class="headerlink" href="#class-phalcon-di" title="永久链接至标题">¶</a></h1>
<p><em>implements</em> <a class="reference internal" href="Phalcon_DiInterface.html"><em>Phalcon\DiInterface</em></a>, ArrayAccess, <a class="reference internal" href="Phalcon_Events_EventsAwareInterface.html"><em>Phalcon\Events\EventsAwareInterface</em></a></p>
<p>Phalcon\Di is a component that implements Dependency Injection/Service Location of services and it&#8221;s itself a container for them.  Since Phalcon is highly decoupled, Phalcon\Di is essential to integrate the different components of the framework. The developer can also use this component to inject dependencies and manage global instances of the different classes used in the application.  Basically, this component implements the <cite>Inversion of Control</cite> pattern. Applying this, the objects do not receive their dependencies using setters or constructors, but requesting a service dependency injector. This reduces the overall complexity, since there is only one way to get the required dependencies within a component.  Additionally, this pattern increases testability in the code, thus making it less prone to errors.</p>
<div class="highlight-php"><div class="highlight"><pre><span class="cp">&lt;?php</span>

 <span class="nv">$di</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\Phalcon\Di</span><span class="p">();</span>

 <span class="c1">//Using a string definition</span>
 <span class="nv">$di</span><span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="s2">&quot;request&quot;</span><span class="p">,</span> <span class="s2">&quot;Phalcon\Http</span><span class="se">\R</span><span class="s2">equest&quot;</span><span class="p">,</span> <span class="k">true</span><span class="p">);</span>

 <span class="c1">//Using an anonymous function</span>
 <span class="nv">$di</span><span class="o">-&gt;</span><span class="na">set</span><span class="p">(</span><span class="s2">&quot;request&quot;</span><span class="p">,</span> <span class="k">function</span><span class="p">(){</span>
  <span class="k">return</span> <span class="k">new</span> <span class="nx">\Phalcon\Http\Request</span><span class="p">();</span>
 <span class="p">},</span> <span class="k">true</span><span class="p">);</span>

 <span class="nv">$request</span> <span class="o">=</span> <span class="nv">$di</span><span class="o">-&gt;</span><span class="na">getRequest</span><span class="p">();</span>
</pre></div>
</div>
<div class="section" id="methods">
<h2>Methods<a class="headerlink" href="#methods" title="永久链接至标题">¶</a></h2>
<p>public  <strong>__construct</strong> ()</p>
<p>Phalcon\Di constructor</p>
<p>public <tt class="xref doc docutils literal"><span class="pre">Phalcon\Di\ServiceInterface</span></tt>  <strong>set</strong> (<em>unknown</em> $name, <em>unknown</em> $definition, [<em>unknown</em> $shared])</p>
<p>Registers a service in the services container</p>
<p>public <tt class="xref doc docutils literal"><span class="pre">Phalcon\Di\ServiceInterface</span></tt>  <strong>setShared</strong> (<em>unknown</em> $name, <em>unknown</em> $definition)</p>
<p>Registers an &#8220;always shared&#8221; service in the services container</p>
<p>public  <strong>remove</strong> (<em>unknown</em> $name)</p>
<p>Removes a service in the services container</p>
<p>public <tt class="xref doc docutils literal"><span class="pre">Phalcon\Di\ServiceInterface</span></tt> <a href="#id1"><span class="problematic" id="id2">|</span></a>false <strong>attempt</strong> (<em>unknown</em> $name, <em>unknown</em> $definition, [<em>unknown</em> $shared])</p>
<p>Attempts to register a service in the services container Only is successful if a service hasn&#8221;t been registered previously with the same name</p>
<p>public <tt class="xref doc docutils literal"><span class="pre">Phalcon\Di\ServiceInterface</span></tt>  <strong>setRaw</strong> (<em>unknown</em> $name, <em>unknown</em> $rawDefinition)</p>
<p>Sets a service using a raw Phalcon\Di\Service definition</p>
<p>public <em>mixed</em>  <strong>getRaw</strong> (<em>unknown</em> $name)</p>
<p>Returns a service definition without resolving</p>
<p>public <tt class="xref doc docutils literal"><span class="pre">Phalcon\Di\ServiceInterface</span></tt>  <strong>getService</strong> (<em>unknown</em> $name)</p>
<p>Returns a Phalcon\Di\Service instance</p>
<p>public <em>mixed</em>  <strong>get</strong> (<em>unknown</em> $name, [<em>unknown</em> $parameters])</p>
<p>Resolves the service based on its configuration</p>
<p>public <em>mixed</em>  <strong>getShared</strong> (<em>unknown</em> $name, [<em>unknown</em> $parameters])</p>
<p>Resolves a service, the resolved service is stored in the DI, subsequent requests for this service will return the same instance</p>
<p>public <em>boolean</em>  <strong>has</strong> (<em>unknown</em> $name)</p>
<p>Check whether the DI contains a service by a name</p>
<p>public <em>boolean</em>  <strong>wasFreshInstance</strong> ()</p>
<p>Check whether the last service obtained via getShared produced a fresh instance or an existing one</p>
<p>public <tt class="xref doc docutils literal"><span class="pre">Phalcon\Di\Service</span></tt> [] <strong>getServices</strong> ()</p>
<p>Return the services registered in the DI</p>
<p>public <em>boolean</em>  <strong>offsetExists</strong> (<em>unknown</em> $name)</p>
<p>Check if a service is registered using the array syntax</p>
<p>public <em>boolean</em>  <strong>offsetSet</strong> (<em>unknown</em> $name, <em>unknown</em> $definition)</p>
<p>Allows to register a shared service using the array syntax</p>
<div class="highlight-php"><div class="highlight"><pre><span class="cp">&lt;?php</span>

<span class="nv">$di</span><span class="p">[</span><span class="s2">&quot;request&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">\Phalcon\Http\Request</span><span class="p">();</span>
</pre></div>
</div>
<p>public <em>mixed</em>  <strong>offsetGet</strong> (<em>unknown</em> $name)</p>
<p>Allows to obtain a shared service using the array syntax</p>
<div class="highlight-php"><div class="highlight"><pre><span class="cp">&lt;?php</span>

<span class="nb">var_dump</span><span class="p">(</span><span class="nv">$di</span><span class="p">[</span><span class="s2">&quot;request&quot;</span><span class="p">]);</span>
</pre></div>
</div>
<p>public  <strong>offsetUnset</strong> (<em>unknown</em> $name)</p>
<p>Removes a service from the services container using the array syntax</p>
<p>public  <strong>setEventsManager</strong> (<em>unknown</em> $eventsManager)</p>
<p>Sets the event manager</p>
<p>public <a class="reference internal" href="Phalcon_Events_ManagerInterface.html"><em>Phalcon\Events\ManagerInterface</em></a>  <strong>getEventsManager</strong> ()</p>
<p>Returns the internal event manager</p>
<p>public <em>mixed</em>  <strong>__call</strong> (<em>unknown</em> $method, [<em>unknown</em> $arguments])</p>
<p>Magic method to get or set services using setters/getters</p>
<p>public static  <strong>setDefault</strong> (<em>unknown</em> $dependencyInjector)</p>
<p>Set a default dependency injection container to be obtained into static methods</p>
<p>public static <a class="reference internal" href="Phalcon_DiInterface.html"><em>Phalcon\DiInterface</em></a>  <strong>getDefault</strong> ()</p>
<p>Return the lastest DI created</p>
<p>public static  <strong>reset</strong> ()</p>
<p>Resets the internal default DI</p>
</div>
</div>


                    </div>
                  </div>
                </div>
            </div>
          </td>
        </tr>
      </table>
    <div class="related">
      <ul>
        <li class="right" >
          <a href="../genindex.html" title="总目录"
             >索引</a></li> 
      </ul>
    </div>

      <div class="prefooter">
  <div class="container">
      <div class="row">
          <div class="col-sm-3 text-right">
              <span>Follow along:</span>
          </div>
          <div class="col-sm-6 text-center">
              <a href="https://twitter.com/phalconphp" alt="Twitter" class="btn-social btn-social-twitter"><i class="icon-twitter"></i></a>
              <a href="https://www.facebook.com/pages/Phalcon-Framework/134230726685897" alt="Facebook" class="btn-social btn-social-facebook"><i class="icon-facebook"></i></a>
              <a href="https://plus.google.com/102376109340560896457" alt="Google+" class="btn-social btn-social-googleplus"><i class="icon-googleplus"></i></a>
              <a href="https://github.com/phalcon/cphalcon" alt="Github" class="btn-social btn-social-github"><i class="icon-github"></i></a>
          </div>
          <div class="col-sm-3">
          </div>
      </div>
  </div>

</div>
<footer class="footer">
  <div class="container">
      <div class="row">
          <div class="col-xs-4 col-sm-3">
              <h4>Download</h4>
              <ul>
                  <li><a href="http://phalconphp.com/download">Installing Phalcon</a></li>
                  <li><a href="http://docs.phalconphp.com/en/latest/index.html" class="header-nav-link" target="_blank">Documentation</a></li>
                  <li><a href="http://api.phalconphp.com">API</a></li>
                  <li><a href="http://docs.phalconphp.com/en/latest/reference/tutorial.html">Tutorial</a></li>
                  <li><a href="http://docs.phalconphp.com/en/latest/reference/tutorial.html#sample-applications">Sample Applications</a></li>
              </ul>
          </div>
          <div class="col-xs-4 col-sm-3">
              <h4>Community</h4>
              <ul>
                  <li><a href="http://forum.phalconphp.com/" class="header-nav-link" target="_blank">Forum</a></li>
                  <li><a href="https://github.com/phalcon/cphalcon">GitHub</a></li>
                  <li><a href="https://github.com/phalcon/cphalcon/issues">Issue Tracker</a></li>
                  <li><a href="http://stackoverflow.com/questions/tagged/phalcon">Stack Overflow</a></li>
                  <li><a href="http://phalconphp.com/en/testimonials">Testimonials</a></li>
                  <li><a href="http://builtwith.phalconphp.com/">Built with Phalcon</a></li>
                  <li><a href="http://store.phalconphp.com/">Store</a></li>
              </ul>
          </div>
          <div class="col-xs-4 col-sm-2">
              <h4>About</h4>
              <ul>
                  <li><a class="link-black" href="http://blog.phalconphp.com/">Blog</a></li>
                  <li><a href="http://phalconphp.com/en/about">About</a></li>
                  <li><a href="http://phalconphp.com/en/team">Team</a></li>
                  <li><a href="http://phalconphp.com/en/roadmap">Roadmap</a></li>
                  <li><a href="http://phalconphp.com/en/donate">Donate</a></li>
                  <li><a href="http://phalconphp.com/en/consulting">Consulting</a></li>
                  <li><a href="http://phalconphp.com/en/hosting">Hosting</a></li>
              </ul>
          </div>
          <div id="license-spaccer" class="visible-xs"></div>
          <div id="license-wrapper" class="col-xs-12 col-sm-4">
              <p class="license">

                  Found a typo or an error? Want to improve this document? The documentation sources are available on <a href="http://github.com/phalcon/docs">Github</a><br>
                  Need support or have questions? Check our <a href="http://forum.phalconphp.com">Forum</a><br>
                  <br>

                  Phalcon Framework is released under the <a href="https://github.com/phalcon/cphalcon/blob/master/docs/LICENSE.md">new BSD license</a>.<br>
                  Except where otherwise noted, content on this site is licensed under the
                    <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 License.</a>

                <div class="design">
                  <span>Designed by:</span>

                  <a href="http://www.fog-city.net/" class="fogcity" target="_blank" title="Fog City Software"><span>Fog City Software</span></a>
              </div>
          </div>
      </div>
  </div>
</footer>

    </div>
    <script type="text/javascript">
    $(window).on("load", function(){
      var cx = '009733439235723428699:lh9ltjgvdz8';
      var gcse = document.createElement('script');
      gcse.type = 'text/javascript';
      gcse.async = true;
      gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//www.google.com/cse/cse.js?cx=' + cx;
      var s = document.getElementsByTagName('script')[0];
      s.parentNode.insertBefore(gcse, s);
    });
    </script>

  </body>
</html>